
def checkMissingArgs(userIgnoredArgs = []):
    """
    检查参数是否缺失

    param: ignoredArgs: 忽略的参数列表
    """
    def decorator(func):
        def wrapper(*args, **kwargs):
            funcNmae = func.__name__ 
            if(len(kwargs) == 0):
                raise ValueError(f"来自checkMissingArgs: 请使用关键字参数调用函数 {funcNmae}, 以进行参数检查")
            

            defultIgnoreArgs = ['self']
            ignoredArgs = userIgnoredArgs + defultIgnoreArgs
            checkResult = []; # 检查参数是否缺失


            # 遍历 parameters，获取参数名和默认值
            for argKey, argValue in kwargs.items():
                if argValue is None and argKey not in ignoredArgs:
                    checkResult.append(argKey)
            

            if len(checkResult) > 0:
                raise ValueError(f"{funcNmae}:\n 缺失参数:\n{'\n'.join(checkResult)} \n 以上参数都是必填的 \n 写给Server开发者👋: 如果想忽略某个参数，请使用 @checkMissingArgs(ignoredArgs=[参数名])")
            return func(*args, **kwargs)
        return wrapper
    return decorator